package com.xugui.learn.pay.pojo.response;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Map;

/**
 * 统一支付响应
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class PayResponse implements Serializable {

    /**
     * 是否成功
     */
    private Boolean success;

    /**
     * 错误码
     */
    private String errorCode;

    /**
     * 错误信息
     */
    private String errorMsg;

    /**
     * 支付所需参数（前端调起支付所需）
     */
    private Map<String, Object> payParams;

    /**
     * 预支付交易会话标识
     */
    private String prepayId;

    /**
     * 支付跳转 URL
     */
    private String payUrl;

    /**
     * 二维码链接
     */
    private String codeUrl;

    /**
     * 根据错误码和错误信息创建支付失败的响应
     *
     * @param errorCode 错误码
     * @param errorMsg  错误信息
     * @return 支付失败的响应
     */
    public static PayResponse failure(String errorCode, String errorMsg) {
        PayResponse response = new PayResponse();
        response.setSuccess(false);
        response.setErrorCode(errorCode);
        response.setErrorMsg(errorMsg);
        return response;
    }
}